package com.yin.myproject.collection;

/**
 * @author Eason
 * @create 2018-05-28 11:57
 **/
public interface Queue<E> {

    /**
     * 向队列头部添加一个元素,如果队列已满,则抛出{@code IllegalStateException}异常
     *
     * @param e 待添加的元素
     * @return 添加成功返回true
     */
    boolean add(E e);

    /**
     * 向队列头部添加一个元素,如果队列已满,则返回false
     *
     * @param e 待添加的元素
     * @return 添加成功返回true
     */
    boolean offer(E e);

    /**
     * 移除并返回队列头部元素，如果队列为空,抛出{@code NoSuchElementException}异常
     *
     * @return
     */
    E remove();

    /**
     * 移除并返回队列头部元素，如果队列为空,返回{@code null}
     *
     * @return
     */
    E poll();

    /**
     * 返回队列头部的元素,但不从队列中删除，如果队列为空，抛出{@code NoSuchElementException}异常
     *
     * @return
     */
    E element();

    /**
     * 返回队列头部的元素,但不从队列中删除，如果队列为空，返回{@code null}
     *
     * @return
     */
    E peek();
}

